home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / glibc108.zip / glibc108 / time / asctime.c < prev    next >
C/C++ Source or Header  |  1993-05-17  |  2KB  |  51 lines

  1. /* Copyright (C) 1991, 1993 Free Software Foundation, Inc.
  2. This file is part of the GNU C Library.
  3.  
  4. The GNU C Library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Library General Public License as
  6. published by the Free Software Foundation; either version 2 of the
  7. License, or (at your option) any later version.
  8.  
  9. The GNU C Library is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12. Library General Public License for more details.
  13.  
  14. You should have received a copy of the GNU Library General Public
  15. License along with the GNU C Library; see the file COPYING.LIB.  If
  16. not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  17. Cambridge, MA 02139, USA.  */
  18.  
  19. #include <ansidecl.h>
  20. #include <localeinfo.h>
  21. #include <errno.h>
  22. #include <stdio.h>
  23. #include <time.h>
  24.  
  25.  
  26. /* Returns a string of the form "Day Mon dd hh:mm:ss yyyy\n"
  27.    which is the representation of TP in that form.  */
  28. char *
  29. DEFUN(asctime, (tp), CONST struct tm *tp)
  30. {
  31.   static const char format[] = "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n";
  32.   static char result[             3+1+ 3+1+20+1+20+1+20+1+20+1+20+1 + 1];
  33.  
  34.   if (tp == NULL)
  35.     {
  36.       errno = EINVAL;
  37.       return NULL;
  38.     }
  39.   
  40.   if (sprintf (result, format,
  41.            (tp->tm_wday < 0 || tp->tm_wday >= 7 ?
  42.         "???" : _time_info->abbrev_wkday[tp->tm_wday]),
  43.            (tp->tm_mon < 0 || tp->tm_mon >= 12 ?
  44.         "???" : _time_info->abbrev_month[tp->tm_mon]),
  45.            tp->tm_mday, tp->tm_hour, tp->tm_min,
  46.            tp->tm_sec, 1900 + tp->tm_year) < 0)
  47.     return NULL;
  48.  
  49.   return result;
  50. }
  51.